An interconnection network is a set of communication lines and intermediate nodes between a given set of source nodes and a given set of terminal or terminating nodes, such as multi-processor computer elements known as cells. The intermediate nodes in an interconnection network typically comprise switches and hubs, referred to as nodes, between the sources and terminals. Static routing data tables have been used to identify routes used in the interconnection network. When a link between nodes is discovered to have failed, a static route around data table is used to determine a new link to route data across. The route around data table has routing information for a link if the link is the only link that fails. If multiple links fail, the table is not guaranteed to produce routes that ensure a fully connected interconnection network. Multiple links failing result in a fatal error, and shut down of the network.
Previously, systems route an interconnection network using fixed tables encoded in binary code. The code examines links in an order that the hardware supports. The hard coded tables are used to determine what values to write into the routing registers and which outbound port should be used when a bad link is discovered. This prior method is limited to working around a single bad link. A single bad link is guaranteed to have an alternate path, and a simple table lookup suffices. While having greater than one bad link might still have viable alternate paths, it is not guaranteed and the system is restricted to working around a single bad link.